package persistencia.dominio.testGrupos;

import persistencia.dominio.*;
import persistencia.Persistencia;
import server.Singleton;
import utils.Utils;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

 
public class CreacionDeTablas {
  static Persistencia persistencia = null;
  static Connection conexionSQL = null;
  //Nuevas entidades que necesitan que se les cree su tabla en la BD
  static TemaTratadoGrupo temaTratadoGrupo = null;
  static Tema tema = null;
  static Anotador anotador = null;
  static TipoGrupo tipoGrupo = null;
  static ConfiguracionGrupo configuracionGrupo = null;
  static Integracion integracion = null;
  static ForoGrupal foroGrupal = null;
  static ActividadGrupal actividadGrupal = null;
  static ListadoTemas listadoTemas = null;
  static EstadoIntegracion estadoIntegracion = null;
  static Invitacion invitacion = null;
  static Solicitud solicitud = null;
  static ParticipanteExcluido participanteExcluido = null;
  static TipoExclusion tipoExclusion = null;
  static Grupo grupo = null;
  static FAQGPC faqgpc = null;
  static PreguntaFrecuenteFAQGPC preguntaFrecuenteFAQGPC = null;
  static RespuestaPreguntaFrecuenteFAQGPC respuestaPreguntaFrecuenteFAQGPC = null;
  static RespuestaFrecuenteFAQGPC respuestaFrecuenteFAQGPC  = null;
  static TipoUsuarioEnNivel tipoUsuarioEnElNivel = null;

  static Actualizacion actualizacion = null;
  static Modulo modulo = null;
  static Log log = null;
  
  static AccesoSiat accesoSIAT = null;

  static EncuestaSiat encuestaSiat = null; 
  static PreguntaSiat preguntaSiat = null;
  static EncuestaSiatPersona encuestaSiatPersona = null;
  static RespuestaPreguntaSiat respuestaPreguntaSiat = null;
  
  
  static DocenteSolicitado docenteSolicitado = null;
  static SolicitudAula solicitudAula = null;
  static SolicitudDocenteAula solicitudDocenteAula = null;
  static RecursoSolicitado recursoSolicitado = null;
  static RecursoMigracion recursoMigracion = null;
  static MigrandoMaterial migrandoMaterial = null;
  static DatosCreacionAula datosCreacionAula = null;
  static InscripcionOnLine inscripcionOnLine = null;
  static ComisionSolicitud comisionSolicitud = null;
  static ComisionSolicitudDocenteAula comisionSolicitudDocenteAula = null;
  
  static EstadoSolicitudAula estadoSolicitudAulaClonada = null;
  static EstadoSolicitudAula estadoSolicitudAulaNueva = null;
  static EstadoSolicitudAula estadoSolicitudAulaEstandar = null;
  static EstadoSolicitudAula estadoSolicitudAulaPublica = null;
  

  static Favorito favorito = null;

  
  static  TipoLicenciaMaterial tipoLicenciaMaterial = null;
  
  static  TipoCalificacionEncuestas tipoCalificacionEncuestas = null;

  
  static MiMaterial miMaterial = null;
  static ArchivoCompartidoAula archivoCompartidoAula = null;
  
  static PersonaArchivoCompartida personaArchivoCompartida = null;


  static public void initPersistencia(){
	  persistencia = new Persistencia();
	  persistencia.crearTransaccion();
	  //REGISTER DRIVER
	  try {
	      Driver d = (Driver)Class.forName(Singleton.driver).newInstance();
	  }catch (Exception e){
	      System.out.println(e);
	  }

	  //GET CONNECTION
	  conexionSQL=null;
	  try{
	      conexionSQL = DriverManager.getConnection(Singleton.url,Singleton.userName,Singleton.password);
	  }catch(Exception e){
	      System.out.println(e);
	  }
  }

  static public boolean commit(){
	 try {
		  persistencia.commit();
		  conexionSQL.close();
	      return true;
	  }catch(Exception ex){
		  ex.printStackTrace();
		  persistencia.rollback();
		  try{
		     conexionSQL.close();
		  }catch(SQLException ex1){
		      ex1.printStackTrace();
		      return false;
		  }
		     return false;
	  }
  }

  static public boolean rollback(){
	 try {
		 persistencia.rollback();
		 conexionSQL.close();
		 return true;
	 }catch (Exception ex){
		 ex.printStackTrace();
		 return false;
	 }
  }

  public static void cargarBaseDeDatos(){
	  try{
		  initPersistencia();
		  System.out.println("=======================INICIO LA CREACION DE TABLAS==========================");
		  creacionDeTablas();
		  System.out.println("======================TERMINO LA CREACION DE TABLAS==========================");
		  commit();
	  }catch(Exception ee){
			ee.printStackTrace();
			rollback();
	  }
  }

  private static void creacionDeTablas(){
	  /*tema = new Tema();
	  persistencia.hacerPersistente(tema);

	  temaTratadoGrupo = new TemaTratadoGrupo();
	  persistencia.hacerPersistente(temaTratadoGrupo);

	  anotador = new Anotador();
	  persistencia.hacerPersistente(anotador);
	   
	  integracion = new Integracion();
	  persistencia.hacerPersistente(integracion);

	  foroGrupal = new ForoGrupal();
	  persistencia.hacerPersistente(foroGrupal);

	  actividadGrupal = new ActividadGrupal();
	  persistencia.hacerPersistente(actividadGrupal);

	  listadoTemas = new ListadoTemas();
	  persistencia.hacerPersistente(listadoTemas);

	  estadoIntegracion = new EstadoIntegracion();
	  persistencia.hacerPersistente(estadoIntegracion);

	  invitacion = new Invitacion();
	  persistencia.hacerPersistente(invitacion);

	  solicitud = new Solicitud();
	  persistencia.hacerPersistente(solicitud);

	  participanteExcluido = new ParticipanteExcluido();
	  persistencia.hacerPersistente(participanteExcluido);

	  tipoExclusion = new TipoExclusion();
	  persistencia.hacerPersistente(tipoExclusion);

	  grupo = new Grupo();
	  persistencia.hacerPersistente(grupo);*/

	  /*faqgpc = new FAQGPC();
	  persistencia.hacerPersistente(faqgpc);

	  preguntaFrecuenteFAQGPC = new PreguntaFrecuenteFAQGPC();
	  persistencia.hacerPersistente(preguntaFrecuenteFAQGPC);

	  respuestaFrecuenteFAQGPC = new RespuestaFrecuenteFAQGPC();
	  persistencia.hacerPersistente(respuestaFrecuenteFAQGPC);

	  respuestaPreguntaFrecuenteFAQGPC = new RespuestaPreguntaFrecuenteFAQGPC();
	  persistencia.hacerPersistente(respuestaPreguntaFrecuenteFAQGPC);*/
	  
	  /*configuracionGrupo = new ConfiguracionGrupo();
	  persistencia.hacerPersistente(configuracionGrupo);
	  
	  tipoGrupo = new TipoGrupo();
	  persistencia.hacerPersistente(tipoGrupo);
	  
	  tipoUsuarioEnElNivel = new TipoUsuarioEnNivel();
	  persistencia.hacerPersistente(tipoUsuarioEnElNivel);*/
	  	  
	  //ACTUALIZACION SERVIDOR DE PRODUCCION realizada el 18-06-09
	  /*actualizacion = new Actualizacion();
	  persistencia.hacerPersistente(actualizacion);
	  
	  modulo = new Modulo();
	  modulo.setActualizacion(actualizacion);
	  
	  log = new Log();
	  persistencia.hacerPersistente(log);
	  
	  accesoSIAT = new AccesoSiat();
	  persistencia.hacerPersistente(accesoSIAT);
	  
	  encuestaSiat = new EncuestaSiat();
	  persistencia.hacerPersistente(encuestaSiat);
	  
	  preguntaSiat = new PreguntaSiat();
	  persistencia.hacerPersistente(preguntaSiat);
	    
	  encuestaSiatPersona = new EncuestaSiatPersona();
	  persistencia.hacerPersistente(encuestaSiatPersona);
	  
	  respuestaPreguntaSiat = new RespuestaPreguntaSiat();
	  persistencia.hacerPersistente(respuestaPreguntaSiat);*/
	  
	  //Actualizacion hecha para lo de Creacion, Migracion y Clonacion de Aulas
	  /*docenteSolicitado = new DocenteSolicitado();
	  persistencia.hacerPersistente(docenteSolicitado);
	  
	  solicitudAula = new SolicitudAula();
	  persistencia.hacerPersistente(solicitudAula);
	  
	  solicitudDocenteAula = new SolicitudDocenteAula();
	  persistencia.hacerPersistente(solicitudDocenteAula);
	  
	  recursoSolicitado = new RecursoSolicitado();
	  persistencia.hacerPersistente(recursoSolicitado);
	  
	  recursoMigracion = new RecursoMigracion();
	  persistencia.hacerPersistente(recursoMigracion);
	  
	  migrandoMaterial = new MigrandoMaterial();
	  persistencia.hacerPersistente(migrandoMaterial);
	  
	  datosCreacionAula = new DatosCreacionAula();
	  persistencia.hacerPersistente(datosCreacionAula);
	  
	  inscripcionOnLine = new InscripcionOnLine();
	  persistencia.hacerPersistente(inscripcionOnLine);
	  
	  comisionSolicitud = new ComisionSolicitud();
	  persistencia.hacerPersistente(comisionSolicitud);
	  
	  comisionSolicitudDocenteAula = new ComisionSolicitudDocenteAula();
	  persistencia.hacerPersistente(comisionSolicitudDocenteAula);
	  
	  estadoSolicitudAulaClonada = new EstadoSolicitudAula();
	  estadoSolicitudAulaClonada.setDescripcion("clonada");
	  persistencia.hacerPersistente(estadoSolicitudAulaClonada);
	  
	  estadoSolicitudAulaNueva = new EstadoSolicitudAula();
	  estadoSolicitudAulaNueva.setDescripcion("nueva");
	  persistencia.hacerPersistente(estadoSolicitudAulaNueva);
	  
	  estadoSolicitudAulaEstandar = new EstadoSolicitudAula();
	  estadoSolicitudAulaEstandar.setDescripcion("estandar");
	  persistencia.hacerPersistente(estadoSolicitudAulaEstandar);
	  
	  estadoSolicitudAulaPublica = new EstadoSolicitudAula();
	  estadoSolicitudAulaPublica.setDescripcion("publica");
	  persistencia.hacerPersistente(estadoSolicitudAulaPublica);
	  
	  favorito = new Favorito();
	  persistencia.hacerPersistente(favorito);

	  	  
	  tipoLicenciaMaterial = new TipoLicenciaMaterial();
	  persistencia.hacerPersistente(tipoLicenciaMaterial);*/
	  
	  tipoCalificacionEncuestas = new TipoCalificacionEncuestas();
	  persistencia.hacerPersistente(tipoCalificacionEncuestas);
	  
	  tipoLicenciaMaterial = new TipoLicenciaMaterial();
	  persistencia.hacerPersistente(tipoLicenciaMaterial);
	  
	  miMaterial = new MiMaterial();
	  miMaterial.setNombre("Nombre");
	  miMaterial.setFechaCreacion(Utils.hoySqlDate());
	  persistencia.hacerPersistente(miMaterial);
	 
	  archivoCompartidoAula = new ArchivoCompartidoAula();
	  archivoCompartidoAula.setCompartido(Boolean.FALSE);
	  persistencia.hacerPersistente(archivoCompartidoAula);
	  
	  personaArchivoCompartida = new PersonaArchivoCompartida();
	  persistencia.hacerPersistente(personaArchivoCompartida);

  }

  public static void main(String[] args){
                CreacionDeTablas creacionDeTablas = new CreacionDeTablas();
                creacionDeTablas.cargarBaseDeDatos();
  }
}